home *** CD-ROM | disk | FTP | other *** search
/ NASM Certified Personal Trainer / NASM Certified Personal Trainer - Disc 5.iso / NASM_CPT_Section8 / NASM_CPT_Section8_files / Secti.1 / Section 8_files / script.js < prev    next >
Encoding:
Text File  |  2002-05-14  |  26.3 KB  |  882 lines

  1. var vfHaveLoaded=false;
  2. function LoadSld()
  3. {
  4.     var sld=GetObj("SlideObj")
  5.     if( !g_supportsPPTHTML ) {
  6.         sld.style.visibility="visible"
  7.         return
  8.     }
  9.     if( MakeNotesVis() ) return
  10.     runAnimations = _InitAnimations();
  11.     if( IsWin("PPTSld") )
  12.         SldUpdated(GetSldId())
  13.     g_origSz=parseInt(SlideObj.style.fontSize)
  14.     g_origH=sld.style.posHeight
  15.     g_origW=sld.style.posWidth
  16.     g_scaleHyperlinks=(document.all.tags("AREA").length>0)
  17.     if( g_scaleHyperlinks )
  18.         InitHLinkArray()
  19.     if( g_scaleInFrame||(IsWin("PPTSld") && IsFullScrMode() ) )
  20.         document.body.scroll="no"
  21.     vfHaveLoaded=true;
  22. _RSW()
  23.     if( IsWin("PPTSld") && IsFullScrMode() )
  24.         FullScrInit();
  25.     
  26.     MakeSldVis();
  27.     ChkAutoAdv()
  28.  
  29.     if( runAnimations )
  30.     {
  31.         if( document.all("NSPlay") )
  32.             document.all("NSPlay").autoStart = false;
  33.         if( sld.filters && sld.filters.revealtrans )
  34.             setTimeout( "document.body.start()", sld.filters.revealtrans.duration * 1000 );
  35.         else
  36.             document.body.start();
  37.     }
  38. }
  39. function MakeSldVis()
  40. {
  41.     var fTrans=g_showAnimation && SldHasTrans()
  42.     if( fTrans )
  43.     {
  44.         if( g_bgSound ) {
  45.             idx=g_bgSound.indexOf(",");
  46.             pptSound.src=g_bgSound.substr( 0, idx );
  47.             pptSound.loop= -(parseInt(g_bgSound.substr(idx+1)));
  48.         }
  49.         SlideObj.filters.revealtrans.Apply()
  50.     }
  51.     SlideObj.style.visibility="visible"
  52.     if( fTrans )
  53.         SlideObj.filters.revealtrans.Play()
  54. }
  55. function MakeNotesVis()
  56. {
  57.     if( !IsNts() ) return false
  58.     SlideObj.style.display="none"
  59.     nObj = document.all.item("NotesObj")
  60.     SetHasNts(0)
  61.     if( nObj ) {
  62.         nObj.style.display=""
  63.         SetHasNts(1)
  64.     }
  65.     return 1
  66. }
  67. function ChkAutoAdv()
  68. {
  69.     if(SldHasTrans())
  70.         SlideObj.onfilterchange=AutoAdv
  71.     else
  72.         AutoAdv()
  73. }
  74. function AutoAdv()
  75. {
  76.     if(!IsWin("PPTSld") || !gUseSldTimings )return
  77.     var sld=GetCurSld()
  78.     if( (sld.mAdvDelay>0) && !IsFramesMode() )
  79.         setTimeout("GoToNextSld()",sld.mAdvDelay)
  80. }
  81. function GetObj(id)
  82. {
  83.     if(g_supportsPPTHTML) return document.all(id);
  84.     else return document.getElementById(id);
  85. }
  86. function SldHasTrans() { return SlideObj.style.getAttribute("filter")!="" }
  87. function GetSldId() { return sId=location.href.substring(location.href.lastIndexOf('/')+1) }
  88. function HideMenu() { if( frames["PPTSld"] && PPTSld.document.all.item("ctxtmenu") && PPTSld.ctxtmenu.style.display!="none" ) { PPTSld.ctxtmenu.style.display='none'; return true } return false }
  89. function IsWin( name ) { return window.name == name }
  90. function IsNts() { return IsWin("PPTNts") }
  91. function IsSldOrNts() { return( IsWin("PPTSld")||IsWin("PPTNts") ) }
  92. function SupportsPPTAnimation() { return( navigator.platform == "Win32" && navigator.appVersion.indexOf("Windows")>0 ) }
  93. function SupportsPPTHTML()
  94. {
  95.     var appVer=navigator.appVersion, msie=appVer.indexOf("MSIE "), ver=0
  96.     if( msie >= 0 )
  97.         ver=parseFloat( appVer.substring( msie+5, appVer.indexOf(";",msie) ) )
  98.     else
  99.         ver=parseInt(appVer)
  100.     return( ver >= 4 && msie >= 0 )
  101. }
  102. function _RSW()
  103. {
  104.     if (!vfHaveLoaded) return;
  105. if( !g_supportsPPTHTML || IsNts() ||
  106.       ( !g_scaleInFrame && (!IsWin("PPTSld") || !IsFullScrMode()) ) )
  107.         return
  108.         var padding=0;
  109.         if( IsWin("PPTSld") && IsFramesMode() ) padding=6
  110.     cltWidth=document.body.clientWidth-padding
  111.     cltHeight=document.body.clientHeight-padding
  112.     factor=(1.0*cltWidth)/g_origW
  113.     if( cltHeight < g_origH*factor )
  114.         factor=(1.0*cltHeight)/g_origH
  115.     newSize = g_origSz * factor
  116.     if( newSize < 1 ) newSize=1
  117.     s=SlideObj.style
  118.     s.fontSize=newSize+"px"
  119.     s.posWidth=g_origW*factor
  120.     s.posHeight=g_origH*factor
  121.     s.posLeft=(cltWidth-s.posWidth+padding)/2
  122.     s.posTop=(cltHeight-s.posHeight+padding)/2
  123.     if( g_scaleHyperlinks )
  124.         ScaleHyperlinks( factor )
  125. }
  126. function _InitAnimations()
  127. {
  128.     animRuntimeInstalled = ''+document.body.localTime != 'undefined';
  129.     isFullScreen = (window.name == "PPTSld") && !IsFramesMode();
  130.     g_animUseRuntime = g_showAnimation && animRuntimeInstalled && !(isFullScreen && IsSldVisited());
  131.     if( g_animUseRuntime ) {
  132.         collSeq = document.all.tags("seq");
  133.         if( collSeq != null ) {
  134.             for(ii=0;ii<collSeq.length;ii++) {
  135.                 if( collSeq[ii].getAttribute( "p:nodeType" ) == "mainSeq" ) {
  136.                     g_animMainSequence = collSeq[ii];
  137.                     break;
  138.                 }
  139.             }
  140.         }
  141.         if( g_animItemsToHide ) {
  142.             for(jj = 0; jj < g_animItemsToHide.length; jj++) {
  143.                 if( hideObj = GetObj(g_animItemsToHide[jj]) )
  144.                     hideObj.runtimeStyle.visibility="hidden";
  145.             }
  146.         }
  147.         if( g_animInteractiveItems ){
  148.             for(jj = 0; jj < g_animInteractiveItems.length; jj++) {
  149.                 if( triggerObj = GetObj(g_animInteractiveItems[jj]) )
  150.                     triggerObj.runtimeStyle.cursor="hand";
  151.             }
  152.         }
  153.         if( gUseSldTimings && ''+g_animSlideTime != 'undefined' ) {
  154.             adjustedTime = document.body.calculateAutoAdvanceTimes( g_animSlideTime, g_animEffectTimings );
  155.             if( IsWin("PPTSld") && adjustedTime != g_animSlideTime ) {
  156.                var sld = GetCurSld();
  157.                sld.mAdvDelay = adjustedTime * 1000;
  158.             }
  159.         }
  160.     }
  161.     return g_animUseRuntime;
  162. }
  163. gSldJump = 0, gSldJumpTrack = 0, gSldJumpIdx = "";
  164. function _KPH()
  165. {
  166.     if( IsNts() ) return;
  167.     if( !IsFramesMode() && event.keyCode == 27 && !HideMenu() )
  168.         window.close( self );
  169.     else if( event.keyCode == 32 ) {
  170.         if( window.name == "PPTSld" )
  171.             PPTSld.DocumentOnClick();
  172.         else
  173.             GoToNextSld();
  174.     }
  175.     CatchNumKeys( parent, event );
  176. }
  177. function CatchNumKeys( win, event ) {
  178.     if( win.IsFullScrMode() && (48<=event.keyCode) && (event.keyCode<=57) ) {
  179.         gSldJump = 1;
  180.         gSldJumpIdx += (event.keyCode-48).toString();
  181.     }
  182.     if( win.IsFullScrMode() && gSldJump && event.keyCode == 13 ) {
  183.         var numSlds = GetSldList().mList.length
  184.         if ( gSldJumpIdx > numSlds )
  185.             gSldJumpIdx = numSlds;
  186.         if ( gSldJumpIdx >= 0 ) {
  187.             if ( gSldJumpIdx == 0 )
  188.                 gSldJumpIdx = 1;
  189.             var jumpTo = parseInt(gSldJumpIdx);
  190.             gSldJump = 0; gSldJumpIdx = "";
  191.             win.GoToSld( GetSldList().mList[jumpTo-1].mSldHref )
  192.         }
  193.     }
  194. }
  195. function _KDH()
  196. {
  197.     if( event.keyCode == 8 ) {
  198.         event.returnValue = 0;
  199.         GoToPrevSld();
  200.     }
  201. }
  202. var g_HLinkArray = new Array();
  203. function IMapAreaObj( areaObj, coords )
  204. {
  205.   this.areaObj = areaObj;
  206.   this.coords = coords;
  207. }
  208. function InitHLinkArray()
  209. {
  210.   var appVer = navigator.appVersion;
  211.   var msie = appVer.indexOf ( "MSIE " )
  212.   var ver = 0;
  213.   if ( msie >= 0 )
  214.     ver = parseInt ( appVer.substring( msie+5 ) );
  215.   linkNum = 0;
  216.   for (i=0; i<document.all.tags("AREA").length; i++) {
  217.     areaObj = document.all.tags("AREA").item(i);
  218.     if( ( areaObj.id != "pptxscale" ) || ( ver > 4 ) )
  219.       g_HLinkArray[linkNum++] = new IMapAreaObj( areaObj, ParseCoords( areaObj.coords ) );
  220.   }
  221. }
  222. function ScaleHyperlinks( factor )
  223. {
  224.   for ( ii=0; ii< g_HLinkArray.length; ii++) {
  225.     coordsStr="";
  226.     imaObj = g_HLinkArray[ii];
  227.     for ( jj=0; jj < imaObj.coords.length-1; jj++ )
  228.         coordsStr += (imaObj.coords[jj]*factor) + ",";
  229.     coordsStr += (imaObj.coords[jj]*factor);
  230.     imaObj.areaObj.coords = coordsStr;
  231.   }
  232. }
  233. function ParseCoords( coordsStr )
  234. {
  235.   var numArray = new Array();
  236.   var i = curPos = commaPos = 0;
  237.   while ( ( commaPos = coordsStr.indexOf(",", curPos) ) != -1 ) {
  238.     numArray[i++] = parseInt( coordsStr.substr( curPos, commaPos ) );
  239.     curPos = commaPos + 1;
  240.   }
  241.   numArray[i] = parseInt( coordsStr.substr( curPos ) );
  242.   return numArray;
  243. }
  244. function DocumentOnClick()
  245. {
  246.     if( IsNts() || HideMenu() ) return;
  247.     if( ( g_allowAdvOnClick && !IsFramesMode() ) ||
  248.         (event && (event.keyCode==32) ) )
  249.         GoToNextSld();
  250. }
  251.  
  252. var g_supportsPPTHTML = SupportsPPTHTML(), g_scaleInFrame = 1, gId="", g_bgSound="",
  253.     g_scaleHyperlinks = false, g_allowAdvOnClick = 1, g_showInBrowser = 1, gLoopCont = 0, gUseSldTimings = 1;
  254. var g_showAnimation = g_supportsPPTHTML && SupportsPPTAnimation() && ( (window.name=="PPTSld" && !IsFramesMode()) || g_showInBrowser );var g_animManager = null;
  255. var g_animUseRuntime = false;
  256. var g_animItemsToHide, g_animInteractiveItems, g_animSlideTime;
  257. var g_animMainSequence = null;
  258. var ENDSHOW_MESG="End of slide show, click to exit.", SCREEN_MODE="Frames", gIsEndShow=0, NUM_VIS_SLDS=45, SCRIPT_HREF="script.js", FULLSCR_HREF="fullscreen.htm";
  259. var gCurSld = gPrevSld = 1, g_offset = 0, gNtsOpen = gHasNts = gOtlTxtExp = 0, gHasNarration = 0, gOtlOpen = true
  260. window.gPPTHTML=SupportsPPTHTML()
  261. var gMainDoc=new Array(new hrefList("slide0068.htm",1,-1,1),new hrefList("slide0069.htm",1,-1,1),new hrefList("slide0070.htm",1,-1,1),new hrefList("slide0004.htm",1,-1,1),new hrefList("slide0005.htm",1,-1,1),new hrefList("slide0006.htm",1,-1,1),new hrefList("slide0007.htm",1,-1,1),new hrefList("slide0009.htm",1,-1,1),new hrefList("slide0072.htm",1,-1,1),new hrefList("slide0073.htm",1,-1,1),new hrefList("slide0017.htm",1,-1,1),new hrefList("slide0018.htm",1,-1,1),new hrefList("slide0019.htm",1,-1,1),new hrefList("slide0020.htm",1,-1,1),new hrefList("slide0021.htm",1,-1,1),new hrefList("slide0022.htm",1,-1,1),new hrefList("slide0023.htm",1,-1,1),new hrefList("slide0025.htm",1,-1,1),new hrefList("slide0026.htm",1,-1,1),new hrefList("slide0024.htm",1,-1,1),new hrefList("slide0028.htm",1,-1,1),new hrefList("slide0030.htm",1,-1,1),new hrefList("slide0033.htm",1,-1,1),new hrefList("slide0032.htm",1,-1,1),new hrefList("slide0034.htm",1,-1,1),new hrefList("slide0036.htm",1,-1,1),new hrefList("slide0035.htm",1,-1,1),new hrefList("slide0037.htm",1,-1,1),new hrefList("slide0057.htm",1,-1,1),new hrefList("slide0038.htm",1,-1,1),new hrefList("slide0039.htm",1,-1,1),new hrefList("slide0040.htm",1,-1,1),new hrefList("slide0042.htm",1,-1,1),new hrefList("slide0047.htm",1,-1,1),new hrefList("slide0048.htm",1,-1,1),new hrefList("slide0049.htm",1,-1,1),new hrefList("slide0050.htm",1,-1,1),new hrefList("slide0051.htm",1,-1,1),new hrefList("slide0053.htm",1,-1,1),new hrefList("slide0052.htm",1,-1,1),new hrefList("slide0043.htm",1,-1,1),new hrefList("slide0054.htm",1,-1,1),new hrefList("slide0055.htm",1,-1,1),new hrefList("slide0067.htm",1,-1,1),new hrefList("slide0071.htm",1,-1,1));
  262. function FullScrInit()
  263. {
  264.     g_allowAdvOnClick = GetCurSld().mAdvOnClk
  265.     document.body.style.backgroundColor="black"
  266.     document.oncontextmenu=_CM;
  267.     document.onkeydown = _KDH;
  268.     document.ondragstart=Cancel
  269.     document.onselectstart=Cancel
  270.     self.focus()
  271. }
  272. function Redirect( frmId )
  273. {
  274.     var str=document.location.hash,idx=str.indexOf('#'), sId=GetSldId()
  275.     if(idx>=0) str=str.substr(1);
  276.     if( window.name != frmId && ( sId != str) ) {
  277.         obj = GetObj("Main-File")
  278.         window.location.href=obj.href+"#"+sId
  279.         return 1
  280.     }
  281.     return 0
  282. }
  283. var MHTMLPrefix = CalculateMHTMLPrefix();
  284. function CalculateMHTMLPrefix()
  285. {
  286.     if ( document.location.protocol == 'mhtml:') {
  287.         href=new String(document.location.href)
  288.         Start=href.indexOf('!')+1
  289.         End=href.lastIndexOf('/')+1
  290.         if (End < Start)
  291.             return href.substring(0, Start)
  292.         else
  293.         return href.substring(0, End)
  294.     }
  295.     return '';
  296. }
  297. function GetTags(base,tag)
  298. {
  299.     if(g_supportsPPTHTML) return base.all.tags(tag);
  300.     else return base.getElementsByTagName(tag);
  301. }
  302. function UpdNtsPane(){ if(frames["PPTNts"]) PPTNts.location.replace( MHTMLPrefix+GetHrefObj( gCurSld ).mNtsHref ) }
  303. function UpdNavPane( sldIndex ){ if(gNavLoaded) PPTNav.UpdNav() }
  304. function UpdOtNavPane(){ if(gOtlNavLoaded) PPTOtlNav.UpdOtlNav() }
  305. function UpdOtlPane(){ if(gOtlLoaded) PPTOtl.UpdOtl() }
  306. function SetHasNts( fVal )
  307. {
  308.     if( gHasNts != fVal ) {
  309.         gHasNts=fVal
  310.         UpdNavPane()
  311.     }
  312. }
  313. function ToggleOtlText()
  314. {
  315.     gOtlTxtExp=!gOtlTxtExp
  316.     UpdOtlPane()
  317. }
  318. function ToggleOtlPane()
  319. {
  320.     frmset=document.all("PPTHorizAdjust")
  321.     frm=document.all("PPTOtl")
  322.     if( gOtlOpen )
  323.         frmset.cols="*,100%"
  324.     else
  325.         frmset.cols="25%,*"
  326.     gOtlOpen=!gOtlOpen
  327.     frm.noResize=!frm.noResize
  328.     UpdOtNavPane()
  329. }
  330. function ToggleNtsPane()
  331. {
  332.     frmset=document.all("PPTVertAdjust")
  333.     frm=document.all("PPTNts")
  334.     if( gNtsOpen )
  335.         frmset.rows="100%,*"
  336.     else
  337.         frmset.rows="*,20%"
  338.     gNtsOpen=!gNtsOpen
  339.     UpdNtsPane()
  340. }
  341. function ClearMedia()
  342. {
  343.     if (PPTSld.pptSound) PPTSld.pptSound.loop = 0;
  344. }
  345. function FullScreen()
  346. {
  347.     if ( PPTSld.g_animUseRuntime )
  348.         PPTSld.document.body.pause();
  349.     ClearMedia();
  350.     var href = ( document.location.protocol == 'mhtml:') ? FULLSCR_HREF : FULLSCR_HREF+"#"+GetHrefObj(gCurSld).mSldHref;
  351.     if(PPTNav.event.ctrlKey) {
  352.         var w = (window.screen.availWidth * 1.0) / 2.0
  353.         var h = w * (PPTSld.g_origH * 1.0) / PPTSld.g_origW
  354.         win = window.open( MHTMLPrefix+href,null,"toolbar=0,resizable=1,top=0,left=0," + "width="+ w + ",height=" + h );
  355.         if( PPTSld.g_animUseRuntime )
  356.             win.document.body.PPTSldFrameset=window;
  357.     }
  358.     else
  359.     {
  360.         win = window.open( MHTMLPrefix+href,null,"fullscreen=yes" );
  361.         if( PPTSld.g_animUseRuntime )
  362.             win.document.body.PPTSldFrameset=window;
  363.     }
  364. }
  365. function ToggleVNarration()
  366. {
  367.     rObj=PPTSld.document.all("NSPlay")
  368.     if( rObj && !PPTSld.g_animUseRuntime ) {
  369.         if( (rObj.playState == 1)||(rObj.playState == 0) )
  370.             rObj.Play()
  371.         else if( rObj.playState == 2 )
  372.             rObj.Pause()
  373.         else
  374.             return;
  375.     }
  376.     else if( PPTSld.g_animUseRuntime )
  377.     {
  378.         narObj = PPTSld.document.all("narrationID")
  379.         if( narObj )
  380.             narObj.togglePause()
  381.     }
  382. }
  383. function GetCurSldNum()
  384. {
  385.     obj=GetHrefObj(gCurSld)
  386.     if( obj.mOrigVis == 1 )
  387.         return obj.mSldIdx
  388.     else
  389.         return gCurSld
  390. }
  391. function GetNumSlds()
  392. {
  393.     if( GetHrefObj(gCurSld).mOrigVis == 1 )
  394.         return GetSldList().mNumVisSlds;
  395.     else
  396.         return GetSldList().mList.length
  397. }
  398. function GetSldNum( href )
  399. {
  400.     for(ii=0; ii<GetSldList().mList.length; ii++) {
  401.         if ( GetSldList().mList[ii].mSldHref == href )
  402.             return ii+1
  403.     }
  404.     return 1
  405. }
  406. function GetHrefObj( sldIdx ){ return GetSldList().mList[sldIdx-1] }
  407. function IsFramesMode(){ return ( SCREEN_MODE == "Frames" ) }
  408. function IsFullScrMode(){ return ( SCREEN_MODE == "FullScreen" ) }
  409. function GoToNextSld()
  410. {
  411.     ii=gCurSld + 1
  412.     if( GetHrefObj( ii-1 ).mOrigVis == 0 ) {
  413.         if( ii<=GetSldList().mList.length ) {
  414.             obj=GetHrefObj(ii)
  415.             obj.mVis=1
  416.             GoToSldNum(ii)
  417.             return
  418.         }
  419.     }
  420.     else {
  421.         obj=GetHrefObj( ii )
  422.         while ( obj && ( obj.mOrigVis == 0 ) )
  423.             obj=GetHrefObj(++ii)
  424.         if( obj && obj.mOrigVis ) {
  425.             GoToSldNum(ii)
  426.             return
  427.         }
  428.     }
  429.     if( gSldStack.length > 1 )
  430.         PopSldList();
  431.     else if( !IsFramesMode() ) {
  432.                 if( gLoopCont )
  433.             GoToFirst()
  434.                 else
  435.             EndShow()
  436.     }
  437. }
  438. function GoToPrevSld()
  439. {
  440.     ii=gCurSld-1
  441.     if( ii > 0 ) {
  442.         obj=GetHrefObj(ii)
  443.         while ( obj && ( obj.mVis == 0 ) && ( ii>0 ) )
  444.             obj=GetHrefObj(--ii)
  445.         if( ii == 0 ) ii=1
  446.         GoToSldNum(ii)
  447.     }
  448. }
  449. function GoToFirst(){ GoToSld( GetHrefObj(1).mSldHref ) }
  450. function GoToLast()
  451. {
  452.     ii=GetSldList().mList.length
  453.     if( ii != gCurSld )
  454.         GoToSld( GetHrefObj(ii).mSldHref )
  455. }
  456. function GoToSldNum( num )
  457. {
  458.     if( PPTSld.event ) PPTSld.event.cancelBubble=true
  459.     obj = GetHrefObj( num )
  460.     obj.mVis=1
  461.     gPrevSld=gCurSld
  462.     gCurSld = num;
  463.     PPTSld.location.replace(MHTMLPrefix+obj.mSldHref)
  464.     if( IsFramesMode() ) {
  465.         UpdNavPane(); UpdOtlPane(); UpdNtsPane()
  466.     }
  467. }
  468. function GoToSld( href )
  469. {
  470.     if( PPTSld.event ) PPTSld.event.cancelBubble=true
  471.     GetHrefObj( GetSldNum(href) ).mVis=1
  472.     PPTSld.location.replace(MHTMLPrefix+href)
  473. }
  474. function SldUpdated( id )
  475. {
  476.     if( id == GetHrefObj(gCurSld).mSldHref ) return
  477.     gPrevSld=gCurSld
  478.     gCurSld=GetSldNum(id)
  479.     if( IsFramesMode() ) {
  480.         UpdNavPane(); UpdOtlPane(); UpdNtsPane()
  481.     }
  482. }
  483. function PrevSldViewed(){ GoToSld( GetHrefObj(gPrevSld).mSldHref ) }
  484. function HasPrevSld() { return ( gIsEndShow || ( gCurSld != 1 && GetHrefObj( gCurSld-1 ).mVis == 1 )||( GetCurSldNum() > 1 ) ) }
  485. function HasNextSld() { return (GetCurSldNum() != GetNumSlds()) }
  486. function CloseWindow() {
  487.     if( HideMenu() ) return;
  488.     var event = PPTSld.event;
  489.     if( !IsFramesMode() && event && (event.keyCode==27 || event.keyCode==32 || event.type=="click" ) )
  490.         window.close( self );
  491.     CatchNumKeys( self, event );
  492. }
  493. function Unload() { gIsEndShow=0; }
  494. function SetupEndShow() {
  495.     gIsEndShow=1;
  496.     PPTSld.document.body.scroll="no";
  497.     PPTSld.document.onkeypress=CloseWindow;
  498.     PPTSld.document.onclick=CloseWindow;
  499.     PPTSld.document.oncontextmenu=_CM;
  500. }
  501. function EndShow()
  502. {
  503.     if( IsFramesMode() ) return
  504.     if( PPTSld.event ) PPTSld.event.cancelBubble=true
  505.     doc=PPTSld.document
  506.     doc.open()
  507.     doc.writeln('<html><body bgcolor=black onload=SetupEndShow() onunload=Unload()><center><p><font face=Tahoma color=white size=2><br><b>' + ENDSHOW_MESG + '</b></font></p></center></body></html>')
  508.     doc.close()
  509. }
  510. function SetSldVisited(){ GetSldList().mList[gCurSld-1].mVisited=true }
  511. function IsSldVisited(){ return GetSldList().mList[gCurSld-1].mVisited }
  512. function hrefList( sldHref, visible, advDelay, advClk )
  513. {
  514.     this.mSldHref= this.mNtsHref = sldHref
  515.     this.mOrigVis= this.mVis = visible
  516.     this.mVisited= false
  517.     this.mAdvDelay= advDelay
  518.     this.mAdvOnClk= advClk
  519. }
  520. function SldList(arr,curSld,fEnd)
  521. {
  522.     this.mCurSld = curSld;
  523.     this.mList = new Array();
  524.     var idx = 1;
  525.     for(ii=0;ii<arr.length;ii++) {
  526.         this.mList[ii] = new hrefList( arr[ii].mSldHref, arr[ii].mOrigVis, arr[ii].mAdvDelay, arr[ii].mAdvOnClk );
  527.         if( arr[ii].mOrigVis )
  528.             this.mList[ii].mSldIdx = idx++;
  529.     }
  530.     this.mNumVisSlds = idx-1;
  531.     this.fEndShow = fEnd;
  532. }
  533. function GetSldList() {    return gSldStack[gSldStack.length-1] }
  534. function GetCurSld() { return GetSldList().mList[gCurSld - 1] }
  535. gSldStack = new Array();
  536. gSldStack[0] = new SldList(gMainDoc,gCurSld,1)
  537. function ViewCustomShow(idx,fEnd)
  538. {
  539.     if( !IsFullScrMode() ) return;
  540.     var sldList = new Array();
  541.     var custShow = custShowList[idx-1];
  542.     var jj = 0;
  543.     for( ii=0;ii<custShow.length;ii++ ) {
  544.         if( custShow[ii] <= gMainDoc.length )
  545.             sldList[jj++] = gMainDoc[custShow[ii]-1];
  546.     }
  547.     if (sldList.length > 0) {
  548.     PushSldList(sldList,fEnd);
  549.     gCurSld = 1;
  550.     }
  551.     else
  552.         if( PPTSld.event ) PPTSld.event.cancelBubble=true
  553. }
  554. function PushSldList(arr,fEnd) {
  555.     var ii = gSldStack.length;
  556.     gSldStack[ii] = new SldList(arr,gCurSld,fEnd);
  557.     GoToSld( gSldStack[ii].mList[0].mSldHref );
  558. }
  559. function PopSldList() {
  560.     if (gSldStack[gSldStack.length-1].fEndShow)
  561.         EndShow()
  562.     else {
  563.     gCurSld = gSldStack[gSldStack.length-1].mCurSld;
  564.     gSldStack[gSldStack.length-1] = null;
  565.     gSldStack.length--;
  566.     var sldList = gSldStack[gSldStack.length-1];
  567.     GoToSld( sldList.mList[gCurSld - 1].mSldHref );
  568.     }
  569. }
  570. var custShowList=new Array();
  571. function ImgBtn( oId,bId,w,action )
  572. {
  573.     var t=this
  574.     t.Perform    = _IBP
  575.     t.SetActive  = _IBSetA
  576.     t.SetInactive= _IBSetI
  577.     t.SetPressed = _IBSetP
  578.     t.SetDisabled= _IBSetD
  579.     t.Enabled    = _IBSetE
  580.     t.ChangeIcon = null
  581.     t.UserAction = action
  582.     t.ChgState   = _IBUI
  583.     t.mObjId   = oId
  584.     t.mBorderId= bId
  585.     t.mWidth   = w
  586.     t.mIsOn    = t.mCurState = 0
  587. }
  588. function _IBSetA()
  589. {
  590.     if( this.mIsOn ) {
  591.         obj=this.ChgState( gHiliteClr,gShadowClr,2 )
  592.         obj.style.posTop=0
  593.     }
  594. }
  595. function _IBSetI()
  596. {
  597.     if( this.mIsOn ) {
  598.         obj=this.ChgState( gFaceClr,gFaceClr,1 )
  599.         obj.style.posTop=0
  600.     }
  601. }
  602. function _IBSetP()
  603. {
  604.     if( this.mIsOn ) {
  605.         obj=this.ChgState( gShadowClr,gHiliteClr,2 )
  606.         obj.style.posLeft+=1; obj.style.posTop+=1
  607.     }
  608. }
  609. function _IBSetD()
  610. {
  611.     obj=this.ChgState( gFaceClr,gFaceClr,0 )
  612.     obj.style.posTop=0
  613. }
  614. function _IBSetE( state )
  615. {
  616.     var t=this
  617.     GetObj( t.mBorderId ).style.visibility="visible"
  618.     if( state != t.mIsOn ) {
  619.         t.mIsOn=state
  620.         if( state )
  621.             t.SetInactive()
  622.         else
  623.             t.SetDisabled()
  624.     }
  625. }
  626. function _IBP()
  627. {
  628.     var t=this
  629.     if( t.mIsOn ) {
  630.         if( t.UserAction != null )
  631.             t.UserAction()
  632.         if( t.ChangeIcon ) {
  633.             obj=GetObj(t.mObjId)
  634.             if( t.ChangeIcon() )
  635.                 obj.style.posLeft=obj.style.posLeft+(t.mCurState-4)*t.mWidth
  636.             else
  637.                 obj.style.posLeft=obj.style.posLeft+(t.mCurState-0)*t.mWidth
  638.         }
  639.         t.SetActive()
  640.     }
  641. }
  642. function _IBUI( clr1,clr2,nextState )
  643. {
  644.     var t=this
  645.     SetBorder( GetObj( t.mBorderId ),clr1,clr2 )
  646.     obj=GetObj( t.mObjId )
  647.     obj.style.posLeft=obj.style.posLeft+(t.mCurState-nextState)*t.mWidth-obj.style.posTop
  648.     t.mCurState=nextState
  649.     return obj
  650. }
  651. function TxtBtn( oId,oeId,action,chkState )
  652. {
  653.     var t=this
  654.     t.Perform    = _TBP
  655.     t.SetActive  = _TBSetA
  656.     t.SetInactive= _TBSetI
  657.     t.SetPressed = _TBSetP
  658.     t.SetDisabled= _TBSetD
  659.     t.SetEnabled = _TBSetE
  660.     t.GetState   = chkState
  661.     t.UserAction = action
  662.     t.ChgState   = _TBUI
  663.     t.mObjId      = oId
  664.     t.m_elementsId= oeId
  665.     t.mIsOn       = 1
  666. }
  667. function _TBSetA()
  668. {
  669.     var t=this
  670.     if( t.mIsOn && !t.GetState() )
  671.         t.ChgState( gHiliteClr,gShadowClr,0,0 )
  672. }
  673. function _TBSetI()
  674. {
  675.     var t=this
  676.     if( t.mIsOn && !t.GetState() )
  677.         t.ChgState( gFaceClr,gFaceClr,0,0 )
  678. }
  679. function _TBSetP()
  680. {
  681.     if( this.mIsOn )
  682.         this.ChgState( gShadowClr,gHiliteClr,1,1 )
  683. }
  684. function _TBSetD()
  685. {
  686.     this.ChgState( gFaceClr,gFaceClr,0,0 )
  687.     this.mIsOn = 0
  688. }
  689. function _TBSetE()
  690. {
  691.     var t=this
  692.     if( !t.GetState() )
  693.         t.ChgState( gFaceClr,gFaceClr,0,0 )
  694.     else
  695.         t.ChgState( gShadowClr,gHiliteClr,1,1 )
  696.     t.mIsOn = 1
  697. }
  698. function _TBP()
  699. {
  700.     var t=this
  701.     if( t.mIsOn ) {
  702.         if( t.UserAction != null )
  703.             t.UserAction()
  704.         if( !t.GetState )
  705.             return
  706.         if( t.GetState() )
  707.             t.SetPressed()
  708.         else
  709.             t.SetActive()
  710.     }
  711. }
  712. function _TBUI( clr1,clr2,lOffset,tOffset )
  713. {
  714.     SetBorder( GetObj( this.mObjId ),clr1,clr2 )
  715.     Offset( GetObj( this.m_elementsId ),lOffset,tOffset )
  716. }
  717. function Offset( obj, top, left ){ obj.style.top=top; obj.style.left=left }
  718. function SetBorder( obj, upperLeft, lowerRight )
  719. {
  720.     s=obj.style;
  721.     s.borderStyle      = "solid"
  722.     s.borderWidth      = 1
  723.     s.borderLeftColor  = s.borderTopColor = upperLeft
  724.     s.borderBottomColor= s.borderRightColor = lowerRight
  725. }
  726. function GetBtnObj(){ return gBtnArr[window.event.srcElement.id] }
  727. function BtnOnOver(){ b=GetBtnObj(); if( b != null ) b.SetActive() }
  728. function BtnOnDown(){ b=GetBtnObj(); if( b != null ) b.SetPressed() }
  729. function BtnOnOut(){ b=GetBtnObj(); if( b != null ) b.SetInactive() }
  730. function BtnOnUp()
  731. {
  732.     b=GetBtnObj()
  733.     if( b != null )
  734.         b.Perform()
  735.     else
  736.         Upd()
  737. }
  738. function GetNtsState(){ return gNtsOpen }
  739. function GetOtlState(){ return gOtlOpen }
  740. function GetOtlTxtState(){ return gOtlTxtExp }
  741. function NtsBtnSetFlag( fVal )
  742. {
  743.     s=document.all.item( this.m_flagId ).style
  744.     s.display="none"
  745.     if( fVal )
  746.         s.display=""
  747.     else
  748.         s.display="none"
  749. }
  750. function _BSetA_Border(){ b = gBtnArr[this.mObjId]; if( b != null ) b.SetActive() }
  751. function _BSetI_Border(){ b = gBtnArr[this.mObjId]; if( b != null ) b.SetInactive() }
  752. var gHiliteClr="THREEDHIGHLIGHT",gShadowClr="THREEDSHADOW",gFaceClr="THREEDFACE"
  753. var gBtnArr = new Array()
  754. gBtnArr["nb_otl"] = new TxtBtn( "nb_otl","nb_otlElem",ToggleOtlPane,GetOtlState )
  755. gBtnArr["nb_otlElem"] = new TxtBtn( "nb_otl","nb_otlElem",ToggleOtlPane,GetOtlState )
  756. gBtnArr["nb_nts"] = new TxtBtn( "nb_nts","nb_ntsElem",ToggleNtsPane,GetNtsState )
  757. gBtnArr["nb_prev"]= new ImgBtn( "nb_prev","nb_prevBorder",30,GoToPrevSld )
  758. gBtnArr["nb_next"]= new ImgBtn( "nb_next","nb_nextBorder",30,GoToNextSld )
  759. gBtnArr["nb_sldshw"]= new ImgBtn( "nb_sldshw","nb_sldshwBorder",18,FullScreen )
  760. gBtnArr["nb_sldshwBorder"] = new TxtBtn( "nb_sldshw","nb_sldshwBorder",FullScreen,null )
  761. gBtnArr["nb_sldshwBorder"].SetActive = _BSetA_Border;
  762. gBtnArr["nb_sldshwBorder"].SetInactive = _BSetI_Border;
  763. gBtnArr["nb_sldshwText"] = new TxtBtn( "nb_sldshw","nb_sldshwText",FullScreen,null )
  764. gBtnArr["nb_sldshwText"].SetActive = _BSetA_Border;
  765. gBtnArr["nb_sldshwText"].SetInactive = _BSetI_Border;
  766. gBtnArr["nb_voice"]  = new ImgBtn( "nb_voice","nb_voiceBorder",18,ToggleVNarration )
  767. gBtnArr["nb_otlTxt"]= new ImgBtn( "nb_otlTxt","nb_otlTxtBorder",23,ToggleOtlText )
  768. gBtnArr["nb_nts"].m_flagId= "notes_flag"
  769. gBtnArr["nb_nts"].SetFlag = NtsBtnSetFlag
  770. gBtnArr["nb_otlTxt"].ChangeIcon= GetOtlTxtState
  771. var sNext="Next",sPrev="Previous",sEnd="End Show",sFont="Arial",sArrow="Arrow",sFreeform="Freeform",sRect="Rectangle",sOval="Oval"
  772. function ShowMenu()
  773. {
  774.     BuildMenu();
  775.     var doc=PPTSld.document.body,x=PPTSld.event.clientX+doc.scrollLeft,y=PPTSld.event.clientY+doc.scrollTop
  776.     m = PPTSld.document.all.item("ctxtmenu")
  777.     m.style.pixelLeft=x
  778.     if( (x+m.scrollWidth > doc.clientWidth)&&(x-m.scrollWidth > 0) )
  779.         m.style.pixelLeft=x-m.scrollWidth
  780.     m.style.pixelTop=y
  781.     if( (y+m.scrollHeight > doc.clientHeight)&&(y-m.scrollHeight > 0) )
  782.         m.style.pixelTop=y-m.scrollHeight
  783.     m.style.display=""
  784. }
  785. function _CM()
  786. {
  787.     if( !IsFullScrMode() ) return;
  788.     if(!PPTSld.event.ctrlKey) {
  789.         ShowMenu()
  790.         return false
  791.     } else
  792.         HideMenu()
  793. }
  794. function BuildMenu()
  795. {
  796.     if( PPTSld.document.all.item("ctxtmenu") ) return
  797.     var mObj=CreateItem( PPTSld.document.body )
  798.     mObj.id="ctxtmenu"
  799.     mObj.style.visibility="hidden"
  800.     var s=mObj.style
  801.     s.position="absolute"
  802.     s.cursor="default"
  803.     s.width="120px"
  804.     SetCMBorder(mObj,"menu","black")
  805.     var iObj=CreateItem( mObj )
  806.     SetCMBorder( iObj, "threedhighlight","threedshadow" )
  807.     iObj.style.padding=2
  808.     CreateMenuItem( iObj,sNext,M_GoNextSld,M_True )
  809.     CreateMenuItem( iObj,sPrev,M_GoPrevSld,M_HasPrevSld )
  810.     CreateSeparator( iObj )
  811.     CreateMenuItem( iObj,sEnd,M_End,M_True )
  812.     mObj.style.visibility="visible"
  813. }
  814. function Cancel() { window.event.cancelBubble=true; window.event.returnValue=false }
  815. function Highlight() { ChangeClr("activecaption","threedhighlight") }
  816. function Deselect() { ChangeClr("threedface","menutext") }
  817. function Perform()
  818. {
  819.     e=PPTSld.event.srcElement
  820.     if( e.type=="menuitem" && e.IsActive() )
  821.         e.Action()
  822.     else
  823.         PPTSld.event.cancelBubble=true
  824. }
  825. function ChangeClr( bg,clr )
  826. {
  827.     e=PPTSld.event.srcElement
  828.     if( e.type=="menuitem" && e.IsActive() ) {
  829.         e.style.backgroundColor=bg
  830.         e.style.color=clr
  831.     }
  832. }
  833. function M_HasPrevSld() { return( HasPrevSld() ) }
  834. function M_GoNextSld() { if( gIsEndShow ) M_End(); else GoToNextSld() }
  835. function M_GoPrevSld() { if( gIsEndShow ) { history.back(); PPTSld.event.cancelBubble=true; } else GoToPrevSld() }
  836. function M_True() { return true }
  837. function M_End() { window.close( self ) }
  838. function CreateMenuItem( node,text,action,eval )
  839. {
  840.     var e=CreateItem( node )
  841.     e.type="menuitem"
  842.     e.Action=action
  843.     e.IsActive=eval
  844.     e.innerHTML=text
  845.     if( !e.IsActive() )
  846.         e.style.color="threedshadow"
  847.     e.onclick=Perform
  848.     e.onmouseover=Highlight
  849.     e.onmouseout=Deselect
  850.     s=e.style;
  851.     s.fontFamily=sFont
  852.     s.fontSize="9pt"
  853.     s.paddingLeft=2
  854. }
  855. function CreateSeparator( node )
  856. {
  857.     var sObj=CreateItem( node )
  858.     SetCMBorder(sObj,"menu","menu")
  859.     var s=sObj.style
  860.     s.borderTopColor="threedshadow"
  861.     s.borderBottomColor="threedhighlight"
  862.     s.height=1
  863.     s.fontSize="0px"
  864. }
  865. function CreateItem( node )
  866. {
  867.     var elem=PPTSld.document.createElement("DIV")
  868.     node.insertBefore( elem )
  869.     return elem
  870. }
  871. function SetCMBorder( o,ltClr,rbClr )
  872. {
  873.     var s=o.style
  874.     s.backgroundColor="menu"
  875.     s.borderStyle="solid"
  876.     s.borderWidth=1
  877.     s.borderColor=ltClr+" "+rbClr+" "+rbClr+" "+ltClr
  878. }
  879. function WMClick(){if(g_animUseRuntime){window.document.body.pptNext();}}
  880. function Pause(){if(g_animUseRuntime){window.document.body.pause();}}
  881. function Play(){if(g_animUseRuntime){window.document.body.resume();}}
  882.